package com.koo.modules.product.entity.vo;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.baomidou.mybatisplus.annotation.TableField;
import com.koo.modules.product.entity.ProductInfoEntity;
import com.koo.modules.product.entity.ProductImageEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import java.util.Set;

/**
 * 说明：产品包装类
 *
 * @author: charlin
 * @date: 2022-06-10 17:12
 * @version: 1.0.1
 */
@Data
public class ProductVo extends ProductInfoEntity {


//    @ColumnWidth(11)
//    @ExcelProperty(value = "数据源", index = 29)
    @ExcelIgnore
    @ApiModelProperty(value = "数据源")
    private String dataSource;

    @ColumnWidth(11)
    @ExcelProperty(value = "普通名称", index = 30)
    @ApiModelProperty(value = "普通名称")
    private String genericName;

    @ColumnWidth(11)
    @ExcelProperty(value = "批发原价", index = 31)
    @ApiModelProperty(value = "批发原价")
    private BigDecimal tradeOldPrice;

    @ColumnWidth(11)
    @ExcelProperty(value = "平均成本价", index = 32)
    @ApiModelProperty(value = "平均成本价")
    private BigDecimal averagePrice;

    @ColumnWidth(11)
    @ExcelProperty(value = "售价1", index = 33)
    @ApiModelProperty(value = "售价1")
    private BigDecimal sellingPrice1;

    @ColumnWidth(11)
    @ExcelProperty(value = "售价2", index = 34)
    @ApiModelProperty(value = "售价2")
    private BigDecimal sellingPrice2;

    @ColumnWidth(11)
    @ExcelProperty(value = "折扣价", index = 35)
    @ApiModelProperty(value = "折扣价")
    private BigDecimal discountPrice;

    @ColumnWidth(11)
    @ExcelProperty(value = "最高价", index = 36)
    @ApiModelProperty(value = "最高价")
    private BigDecimal topPrice;


    @ColumnWidth(11)
    @ExcelProperty(value = "最低价", index = 37)
    @ApiModelProperty(value = "最低价")
    private BigDecimal lowestPrice;

    @ColumnWidth(11)
    @ExcelProperty(value = "本地码", index = 38)
    @ApiModelProperty(value = "本地码")
    private String localBarCode;

    @ExcelIgnore
    @ApiModelProperty(value = "属性id")
    private String propertyId;

    @ColumnWidth(11)
    @ExcelProperty(value = "属性名称", index = 39)
    @ApiModelProperty(value = "属性名称")
    private String propertyName;

    @ColumnWidth(11)
    @ExcelProperty(value = "验收标准", index = 40)
    @ApiModelProperty(value = "验收标准")
    private String acceptanceLevel;

    @ColumnWidth(11)
    @ExcelProperty(value = "储存条件", index = 41)
    @ApiModelProperty(value = "储存条件")
    private String storageCondition;

    @ColumnWidth(11)
    @ExcelProperty(value = "本位码", index = 42)
    @ApiModelProperty(value = "本位码")
    private String standardCode;

    @ColumnWidth(11)
    @ExcelProperty(value = "规格", index = 43)
    @ApiModelProperty(value = "规格")
    private String proviceStandard;

    @ColumnWidth(11)
    @ExcelProperty(value = "功效", index = 44)
    @ApiModelProperty(value = "功效")
    private String effect;

    @ColumnWidth(11)
    @ExcelProperty(value = "性状", index = 45)
    @ApiModelProperty(value = "性状")
    private String characterInfo;

    @ExcelIgnore
    @ApiModelProperty(value = "品牌id")
    private Long brandId;

    @ColumnWidth(11)
    @ExcelProperty(value = "品牌名称", index = 46)
    @ApiModelProperty(value = "品牌名称")
    private String brandName;

    @ExcelIgnore
    @ApiModelProperty(value = "药品分类Id")
    private String drugType;

    @ColumnWidth(11)
    @ExcelProperty(value = "货位号", index = 47)
    @ApiModelProperty(value = "货位号")
    private String goodsAllocation;


    @ColumnWidth(11)
    @ExcelProperty("注册证号")
    @ApiModelProperty(value = "注册证号")
    private String gspRegisterNo;

    @ColumnWidth(11)
    @ExcelProperty("注册商标")
    @ApiModelProperty(value = "注册商标")
    private String gspRegisterTrademark;

    @ExcelIgnore
    @ApiModelProperty(value = "GSP类别Id")
    private Long gspType;


    @ColumnWidth(11)
    @ExcelProperty("功能分类")
    @ApiModelProperty(value = "功能分类")
    private String gspFuncType;

    @ColumnWidth(11)
    @ExcelProperty("经营范围")
    @ApiModelProperty(value = "经营范围")
    private String gspScopeType;

    @ColumnWidth(11)
    @ExcelProperty("特殊药品")
    @ApiModelProperty(value = "特殊药品")
    private String gspSpecialType;

    @ColumnWidth(11)
    @ExcelProperty("养护类型")
    @ApiModelProperty(value = "养护类型")
    private String conserveType;

    @ColumnWidth(11)
    @ExcelProperty(value = "养护理由", index = 48)
    @ApiModelProperty(value = "养护理由")
    private String conserveReason;

    @ColumnWidth(11)
    @ExcelProperty(value = "养护措施", index = 49)
    @ApiModelProperty(value = "养护措施")
    private String conserveMeasure;

    @ExcelIgnore
    @ApiModelProperty(value = "是否积分")
    private Integer isScore;

    @ExcelIgnore
    @ApiModelProperty(value = "是否折扣")
    private Integer isDiscount;

    @ExcelIgnore
    @ApiModelProperty(value = "是否首营")
    private Integer isFirstSale;

    @ExcelIgnore
    @ApiModelProperty(value = "是否赠品")
    private Integer isGift;

    @ExcelIgnore
    @ApiModelProperty(value = "是否进口药")
    private Integer isImportedDrug;

    @ExcelIgnore
    @ApiModelProperty(value = "医疗器械类别")
    private String instrumnetType;

    @ExcelIgnore
    @ApiModelProperty(value = "蛋白同化制剂标志")
    private Integer isEggPreparation;

    @ExcelIgnore
    @ApiModelProperty(value = "二类精神药品标志")
    private Integer isTwoClassmentalDrug;

    @ExcelIgnore
    @ApiModelProperty(value = "是否含黄麻碱")
    private Integer isEphedrine;

    @ExcelIgnore
    @ApiModelProperty(value = "含肽类激素标志")
    private Integer isThormone;

    @ExcelIgnore
    @ApiModelProperty(value = "一类精神药品标志")
    private Integer isMindDrug;

    @ExcelIgnore
    @ApiModelProperty(value = "危险化学品标志")
    private Integer isDangerChemistry;

    @ExcelIgnore
    @ApiModelProperty(value = "麻醉药品标志")
    private Integer isAnesthetic;

    @ExcelIgnore
    @ApiModelProperty(value = "医疗用毒性品")
    private Integer isMedicalToxicity;

    @ExcelIgnore
    @ApiModelProperty(value = "疫苗")
    private Integer isVaccine;

    @ExcelIgnore
    @ApiModelProperty(value = "诊断试剂")
    private Integer isDiagnosticReagent;

    @ExcelIgnore
    @ApiModelProperty(value = "含兴奋剂药品")
    private Integer isStimulant;

    @ExcelIgnore
    @ApiModelProperty(value = "收货是否需要防串码")
    private Integer isEan1;

    @ExcelIgnore
    @ApiModelProperty(value = "拣货是否需要防串码")
    private Integer isEan2;

    @ExcelIgnore
    @ApiModelProperty(value = "是否保健品标志")
    private Integer isHealthFood;

    @ExcelIgnore
    @ApiModelProperty(value = "食品标志")
    private Integer isFood;

    @ExcelIgnore
    @ApiModelProperty(value = "终止妊娠品")
    private Integer isTermination;

    @ColumnWidth(11)
    @ExcelProperty(value = "门店必备分类", index = 50)
    @ApiModelProperty(value = "门店必备分类")
    private String storeRequireClass;

    @ColumnWidth(11)
    @ExcelProperty(value = "OTC分类", index = 51)
    @ApiModelProperty(value = "OTC分类")
    private String otcClass;

    @ColumnWidth(11)
    @ExcelProperty(value = "季节属性分类", index = 52)
    @ApiModelProperty(value = "季节属性分类")
    private String seasonClass;

    @ColumnWidth(11)
    @ExcelProperty(value = "核心品种分类", index = 53)
    @ApiModelProperty(value = "核心品种分类")
    private String coreItemClass;

    @ColumnWidth(11)
    @ExcelProperty(value = "配送必备分类", index = 54)
    @ApiModelProperty(value = "配送必备分类")
    private String deliveryRequireClass;

    @ColumnWidth(11)
    @ExcelProperty(value = "区域范围名称", index = 55)
    @ApiModelProperty(value = "区域范围名称")
    private String arearangeName;

    @ColumnWidth(11)
    @ExcelProperty(value = "低温品种", index = 56)
    @ApiModelProperty(value = "低温品种")
    private Integer lowTemperature;

    @ColumnWidth(11)
    @ExcelProperty(value = "ABC分类属性", index = 57)
    @ApiModelProperty(value = "ABC分类属性")
    private String abcClass;

    @ColumnWidth(11)
    @ExcelProperty(value = "陈列区", index = 58)
    @ApiModelProperty(value = "陈列区")
    private String exhibitionArea;

    @ExcelIgnore
    @ApiModelProperty(value = "允许网上销售0否1是")
    private Integer isWebSale;

    @ColumnWidth(11)
    @ExcelProperty(value = "业务员", index = 59)
    @ApiModelProperty(value = "业务员")
    private String salesman;

    @ColumnWidth(11)
    @ExcelProperty(value = "业务员电话", index = 60)
    @ApiModelProperty(value = "业务员电话")
    private String salesmanMobile;

    @ColumnWidth(11)
    @ExcelProperty(value = "外部编码", index = 61)
    @ApiModelProperty(value = "外部编码")
    private String outCode;


    //-----------------------------
    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否处方药", index = 62)
    private String rxDrug;

    public String getRxDrug() {
        return Objects.equals(super.getIsRxDrug(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否医保", index = 63)
    private String yiBao;

    public String getYiBao() {
        return Objects.equals(super.getIsYiBao(), 1) ? "是" : "否";
    }


    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "含特药", index = 64)
    private String gmp;

    public String getGmp() {
        return Objects.equals(super.getIsGmp(), 1) ? "是" : "否";
    }


    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否中药", index = 65)
    private String chinaDrug;

    public String getChinaDrug() {
        return Objects.equals(super.getIsDrug(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "能否拆零", index = 66)
    private String canSplit;

    public String getCanSplit() {
        return Objects.equals(super.getIsCanSplit(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否拆零药", index = 67)
    private String split;

    public String getSplit() {
        return Objects.equals(super.getIsSplit(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否审核", index = 68)
    private String audit;

    public String getAudit() {
        return Objects.equals(super.getIsAudit(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否取消", index = 69)
    private String cancel;

    public String getCancel() {
        return Objects.equals(super.getIsCancel(), 1) ? "是" : "否";
    }


    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否重点养护", index = 70)
    private String mainConserve;

    public String getMainConserve() {
        return Objects.equals(super.getIsMainConserve(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否中药饮片", index = 71)
    private String drugPiece;

    public String getDrugPiece() {
        return Objects.equals(super.getIsDrugPiece(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否提成", index = 72)
    private String commission;

    public String getCommission() {
        return Objects.equals(super.getIsCommission(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "凭处方单销售", index = 73)
    private String needPrescription;

    public String getNeedPrescription() {
        return Objects.equals(super.getIsNeedPrescription(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否退热", index = 74)
    private String coldMedicine;

    public String getColdMedicine() {
        return Objects.equals(super.getIsColdMedicine(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否积分", index = 75)
    private String score;

    public String getScore() {
        return Objects.equals(getIsScore(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否折扣", index = 76)
    private String discount;

    public String getDiscount() {
        return Objects.equals(getIsDiscount(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否首营", index = 77)
    private String firstSale;

    public String getFirstSale() {
        return Objects.equals(getIsFirstSale(), 1) ? "是" : "否";
    }


    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否赠品", index = 78)
    private String gift;

    public String getGift() {
        return Objects.equals(getIsGift(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否进口药", index = 79)
    private String importedDrug;

    public String getImportedDrug() {
        return Objects.equals(getIsImportedDrug(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "蛋白同化制剂标志", index = 80)
    private String eggPreparation;

    public String getEggPreparation() {
        return Objects.equals(getIsEggPreparation(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "二类精神药品标志", index = 81)
    private String twoClassmentalDrug;

    public String getTwoClassmentalDrug() {
        return Objects.equals(getIsTwoClassmentalDrug(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否含黄麻碱", index = 82)
    private String ephedrine;

    public String getEphedrine() {
        return Objects.equals(getIsEphedrine(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "含肽类激素标志", index = 83)
    private String thormone;

    public String getThormone() {
        return Objects.equals(getIsThormone(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "一类精神药品标志", index = 84)
    private String mindDrug;

    public String getMindDrug() {
        return Objects.equals(getIsMindDrug(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "危险化学品标志", index = 85)
    private String dangerChemistry;

    public String getDangerChemistry() {
        return Objects.equals(getIsDangerChemistry(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "麻醉药品标志", index = 86)
    private String anesthetic;

    public String getAnesthetic() {
        return Objects.equals(getIsAnesthetic(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "医疗用毒性品", index = 87)
    private String medicalToxicity;

    public String getMedicalToxicity() {
        return Objects.equals(getIsMedicalToxicity(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "疫苗", index = 88)
    private String vaccine;

    public String getVaccine() {
        return Objects.equals(getIsVaccine(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "诊断试剂", index = 89)
    private String diagnosticReagent;

    public String getDiagnosticReagent() {
        return Objects.equals(getIsDiagnosticReagent(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "含兴奋剂药品", index = 90)
    private String stimulant;

    public String getStimulant() {
        return Objects.equals(getIsStimulant(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "是否保健品", index = 91)
    private String healthFood;

    public String getHealthFood() {
        return Objects.equals(getIsHealthFood(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "食品标志", index = 92)
    private String food;

    public String getFood() {
        return Objects.equals(getIsFood(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "终止妊娠品", index = 93)
    private String termination;

    public String getTermination() {
        return Objects.equals(getIsTermination(), 1) ? "是" : "否";
    }

    @TableField(exist = false)
    @ColumnWidth(11)
    @ExcelProperty(value = "允许网上销售", index = 94)
    private String webSale;

    public String getWebSale() {
        return Objects.equals(getIsWebSale(), 1) ? "是" : "否";
    }


    //-------------------------------------------------------

    @ExcelIgnore
    @TableField(exist = false)
    @ApiModelProperty(value = "用来接收级联数据")
    private Set<Long> cateIds;

    @ExcelIgnore
    @TableField(exist = false)
    @ApiModelProperty(value = "上传图片地址")
    private List<ProductImageEntity> pics;

}
